from datetime import datetime

from sqlalchemy import Column, Integer, String, DateTime, TIMESTAMP
from sqlalchemy.sql import func

from model.base import Base

""" 
SQLAlchemy 模型，用于数据库 CRUD
"""


class File(Base):
    # __tablename__ = "table_file"
    __tablename__ = "tb_file"
    id = Column(Integer, primary_key=True)
    bucket = Column(String)
    uuid = Column(String, unique=True)
    name = Column(String, index=True)
    type = Column(String, index=True)
    url = Column(String)
    # 在 Python 中，int类型理论上可以表示任意大小的整数，仅受限于可用的内存大小
    # 在 MySQL 中，int 数值范围是32 位整数 0~42 9496 7295，而文件大小限制了 4M，够用了
    size = Column(Integer)
    # create_time = Column(DateTime, server_default=func.now())
    # update_time = Column(DateTime, server_default=func.now())
    create_stamp = Column(TIMESTAMP, nullable=False, default=datetime.utcnow())
    update_stamp = Column(TIMESTAMP, nullable=False, default=datetime.utcnow())


"""
数据库设计

table file

id(key)                 文件编码
bucket                  存储桶
uuid(unique)            上传 minio 时，生成uuid替换文件名
name(index)             文件名（包含类型）
type(index)             文件类型
url                     文件下载地址，url 签名，不设置时间限制
size                    文件大小
create_time             创建时间
update_time(index)      更新时间

"""
